package queue

import (
	"context"
	"time"

	"rds-mysql-downloader/config"

	"github.com/go-redis/redis/v8"
)

var redisCli redis.Client
var ctx context.Context

func init() {
	ctx = context.Background()
	redisCli = *redis.NewClient(&redis.Options{
		Addr:     config.ConfigInfo.Redis.Addr,
		Password: config.ConfigInfo.Redis.Password,
		DB:       config.ConfigInfo.Redis.Db,
	})

}

// Hset
func Hset(key string, maps map[string]string, exTime time.Duration) error {
	err := redisCli.HSet(ctx, key, maps).Err()
	if err != nil {
		return err
	}
	err = redisCli.Expire(ctx, key, exTime).Err()
	if err != nil {
		return err
	}
	return nil
}

// HgetALL
func HgetAll(key string) map[string]string {
	return redisCli.HGetAll(ctx, key).Val()
}

// Lpush 添加已下载的jobid
func Lpush(key string, ids string) error {
	err := redisCli.LPush(ctx, config.ConfigInfo.Redis.AlreadyDownloadJobs, ids).Err()
	if err != nil {
		return err
	}
	return nil
}

// Lrange huoqu已下载的jobid列表
func Lrange(key string) ([]string, error) {
	// err := redisCli.LRange(ctx, key, 0, -1).Err()
	// // fmt.Printf("Type Of Lrange Error: %T", err)
	// if err == redis.Nil {
	// 	return []string{"nilinstakceid"}, redis.Nil
	// } else if err != nil {
	// 	return []string{}, nil
	// }
	return redisCli.LRange(ctx, key, 0, -1).Val(), nil
}
